package com.itheima.mapper;

import com.github.pagehelper.Page;
import com.itheima.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface RoleMapper {
    Set<Role> findByUserId(@Param("id") Integer id);

    Set<Role> getRolesByUserId(@Param("userId") Integer userId);

    List<Role> findAll();

    void add(Role role);

    void setRoleAndMenus(@Param("roleId") Integer roleId, @Param("menuIds") Set<Integer> menuIds);

    void setRoleAndPermissions(@Param("roleId") Integer roleId, @Param("permissionIds") Integer[] permissionIds);

    void deleteRoleAndMenus(@Param("roleId") Integer roleId);

    void deleteRoleAndPermissions(@Param("roleId") Integer roleId);

    Page<Role> findPage(@Param("queryString") String queryString);

    List<Integer> getMenuIdsByRoleId(@Param("roleId") Integer roleId);

    List<Integer> getPermissionIdsByRoleId(@Param("roleId") Integer roleId);

    void delete(@Param("roleId") Integer roleId);

    void edit(Role role);

    Integer findUserCountByRoleId(@Param("roleId") Integer roleId);

    List<Integer> findParentIdsByIds(@Param("menuIds") Integer[] menuIds);

    Role findByNameOrKeyword(Role role);

    Role findByRoleId(@Param("roleId") Integer roleId);
}
